# 设置全局环境变量
import re
from Common.handle_config import conf
from Common.handle_log import logger
import time


class EnvData:
    pass


def clear_EnvData_attrs():
    # 清理 EnvData里设置的属性
    values = dict(EnvData.__dict__.items())
    for key, values in values.items():
        if key.startswith("__"):
            pass
        else:
            delattr(EnvData, key)


def replace_case_by_regular(case):
    """
    对excel当中，读取出来的整条测试用例，做全部替换。
    包括url,request_data,expected,check_sql
    """
    for key,value in case.items():
        logger.info("case是字符串吗？{}".format(isinstance(value, str)))
        if case is not None and isinstance(value,str):
            case[key]=__replace_by_regular(value)
    logger.info("正则表达式替换完成之后的请求数据：\n{}".format(case))
    return case



def __replace_by_regular(data):
    logger.info("【~~~~~~开始替换了~~~~】")
    """
    将字符串当中，匹配#(.*?)#部分，替换换对应的真实数据。
    真实数据只从2个地方去获取：1个是配置文件当中的data区域 。另1个是，EvnData的类属性。
    data: 字符串
    return: 返回的是替换之后的字符串
    ps： 1个是配置文件当中的data区域 。另1个是，EvnData的类属性。必须都是字符串类型。
    """
    regex = "#(.*?)#"
    replace_data = re.findall(regex,data)
    logger.info("请求数据：{}".format(data))
    logger.info("需要替换数据：{}".format(replace_data))
    if replace_data:
        for i in replace_data:
            # 得到标识符对应的值。
            try:
                value = conf.get("data", i)#从配置文件中获取
                logger.info("从配置文件中找到【{}】，需要用【{}】进行替换".format(i,value))
            except:
                try:
                    value = getattr(EnvData, i)#从全局环境变量中获取
                    logger.info("从全局环境变量中找到【{}】，需要用【{}】进行替换".format(i,value))
                except:
                    continue

            data =data.replace("#{}#".format(i),value)#进行替换

    return data


if __name__ == '__main__':
    # clear_EnvData_attrs()
    case = {
        "method": "POST",
        "url": "http://api.lemonban.com/futureloan/#phone#/member/register",
        "request_data": '{"mobile_phone": "#phone#", "pwd": "123456789", "type": 1, "reg_name": "美丽可爱的小简"}'
    }
    print(replace_case_by_regular(case))
    # data='{"mobile_phone": "#phone#", "passwd": "#passwd#", "type": 1, "reg_name": "美丽可爱的小简"}'
    # print(replace_by_regular(data))

    # time = time.strftime("%Y-%m-%d %X", time.localtime())
    # time=time.strftime("%Y%m%d%H%M%S",time.localtime())
    # print(time)
